前言

网站的部署或移植是一套固定流程,所以我们可以根据固定的步骤来部署。

我们知道网站就三样东西组成,nginx、wordpress和mysql,也就是说我们只要部署这三个东西就行。

有两样好东西可以非常方便管理以上三个东西,分别是git和docker。

git的好处在于方便管理网站源码和配置文件,当本地修改配置后可以方便同步发哦服务器。

docker的好处在于把网站的三个东西打包起来,随时能部署。

步骤一 安装git、docker、docker-compose

  1. {% post_link linux安装git %}

  2. {% post_link linux安装docker %}

  3. {% post_link linux安装docker-compose %}

步骤二 服务器搭建git仓库

1. 创建git用户

我们要在服务器搭建一个git裸仓库用来和本地关联,这样就能方便的在本地和服务器之间传递配置。git裸仓库类似于我们平时用的github和码云。

同时我们还应该设定一个只有git权限的用户,该用户只能使用git相关操作。这是为了安全考虑,假如我们直接用root用户远程操作git仓库,那么一旦别人破解root密码就能完全操控服务器。

同时为了同步docker容器内的uid和gid,所以我们规定所有容器包括git的通用uid和gid都是9876。

#创建git用户,同时会创建git用户组
useradd git
#修改git用户组gid
groupmod -g 9876 git
#修改git用户的uid
usermod -u 9876 git
#修设置git用户密码
passwd git

2. 搭建git仓库

mkdir /home/git/meizdao.git
git init --bare /home/git/meizdao.git
#把仓库的拥有者设为git用户
chown -R git:git meizdao.git

步骤三 建立服务器端git仓库映射文件夹

我们在本地使用git命令推送内容到服务器git仓库后,需要git在接收到我们推送的最新内容后,自动把最新内容更新到某个文件夹。这就要了解git的两个知识点。

首先git是可以分离git仓库和映射文件夹的。也就是说git仓库的位置不用变,比如说/home/git/meizdao.git仓库位置不用变,但是从这个位置拉出来的文件位置可以随意。

其次git内部设置了一系列事件,就好比javascript的事件驱动一样,当某个事件发生的时候,就会触发某些动作,所以我们可以设置post-update事件,当仓库内容更新时检出最新内容到映射文件夹。

1. 创建映射文件夹

mkdir /usr/local/meizdao
chown -R git:git /usr/local/meizdao

2. 设置事件文件post-update

#找到post-update事件模板
cd /home/git/meizdao.git/hooks
cp post-update.sample post-update

把下面代码拷贝到事件文件中

#!/bin/sh

git --work-tree=/usr/local/meizdao --git-dir=/home/git/meizdao.git checkout -f
#这个文件夹用来存放定时任务执行的脚本
chmod -R 777 /usr/local/meizdao/script
exec git update-server-info

步骤四 把本地源码和配置上传到服务器

1. 在本地关联远程仓库

git remote add origin git@meizdao.com:/home/git/meizdao.git
git push -uf origin master

2. 启动服务器

docker-compose -f /usr/local/meizdao/docker-compose/docker-compose.yml up -d --build

步骤五 设置linux安全

linux的基本安全设置:

  1. 禁用root账户登陆,指定某个特定的用户登陆
  2. 修改ssh登陆端口
  3. 开启firewalld防火墙

linux高级安全设置:

  1. 定期监控sshd登陆日志,发现不寻常的登陆ip则拉入黑名单

步骤六 设置数据库自动备份定时任务

crontab+git+github三个东西相结合,就能定时备份数据库到github。

1. 创建备份文件夹

mkdir /usr/local/meizdao/backup
#这个文件夹权限和script文件夹权限一样,要全部放开,因为root用户会来操作
chmod -R 777 /usr/local/meizdao/backup

2. 把该文件夹关联github仓库

因为第一次推送到远程仓库时需要对两个仓库进行关联, 所以第一次我们自己弄个文件进行推送(我脚本里执行的是git push命令, 但第一次推送要执行git -uf push origin master)

git init
git remote add origin <github仓库>
touch 1.txt
git add . && git commit -m'1'
git -uf push origin master

3. 设置定时任务

crontab -e

把下面命令写入定时任务中,意思是每天凌晨3点去执行script文件夹中的mysqldump.sh脚本

0 3 * * * /usr/local//script/mysqldump.sh

总结

根据以上步骤就能快速部署一个网站, 并且实现定时备份数据库的功能。

THE END
推荐文章
  • Uncaught SyntaxError: Unexpected token &lt;

  • 设计模式的工厂模式和策略模式

  • div遮罩无法覆盖全部页面和遮罩弹出后滑动条还能滑动

  • 在win10上配置远程linxu服务器ssh免密登录

  • git的分支操作

  • wordpress给css和js文件增加时间戳,防止用户由于缓存原因不能访问最新文件

  • wordpress中wp_register_script与wp_enqueue_script的区别

  • 黄帝内经-第23篇-宣明五气篇(1)

评论 共0条
开启精彩搜索

热门搜索

暂无

历史搜索

用户名/邮箱/手机号
密码
用户名
密码
重复密码
邮箱/手机号
验证码
发送验证码
59秒后可重发
注册
找回密码
邮箱/手机号
验证码
发送验证码
59秒后可重发
新密码
重复密码
请选择支付方式
余额支付

购买将消耗【10

微信支付
微信扫码支付 0 元
[ 04分50秒 ]
请使用微信扫一扫
扫描二维码支付
支付宝支付
支付宝扫码支付 0 元
[ 04分50秒 ]
请使用支付宝扫一扫
扫描二维码支付
已完成支付
未完成支付

请输入验证码

点击验证码可以刷新

你确认吗?

确认

2024年10月1日

0字

0字

2024年10月

0字

新增

0字

新增

0字

0字

新增

0字

0字

新增

0字

0字

新增

0字

0字

新增

0字

0字

新增

0字

0字

新增

0字

0字

0字

新增

0字

0字

0字

0字

新增

0字

0字